package edu.gdkm.demo;

import java.util.Scanner;

public class Demo19 {
    //自幂数是指一个数，m位数的每个数位上的数字n的m次幂之和等于它本身。
    // 例如：1^3 + 5^3 + 3^3 = 153
    //      9^5 + 2^5 + 7^5 + 2^5 +7^5 =92727
    //      8^8 + 8^8 + 5^8 + 9^8 + 3^8 + 4^8 + 7^8 + 7^8=88593477
    //求100000000以内的自幂数
    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        System.out.println("请输入一个数：");
//        int i =scanner.nextInt();
       //如何判断i是否为自幂数
       for(int i=100;i<100000000;i++){
           int m =0;   //先求出i的位数
           int y=i;
           while(y!=0){
               m++;    //每次除于10不为0，则位数加1
               y=y/10;
           }
           int x=i;
           int sum=0;
           while(x!=0){
               int n=x%10;  //i的每位数
               int nn=1;    //记录n的幂次方
               for(int j=0;j<m;j++){      //对每个位数n求m次方，m由i的位数决定
                   nn=nn*n;
               }
               sum=sum+nn;
               x=x/10;
           }
           if(sum==i){
               System.out.println(i+"是自幂数");
           }
       }
    }
}
